package la.iok.hzsvn.lewin.movie.service;

import la.iok.hzsvn.lewin.movie.core.Token;
import la.iok.hzsvn.lewin.movie.entity.MovieEncryptCode;
import la.iok.hzsvn.lewin.mybatis.service.BaseService;
import la.iok.hzsvn.share.annotations.NotNull;
import la.iok.hzsvn.share.annotations.Nullable;

public interface MovieEncryptCodeService extends BaseService<MovieEncryptCode,Long> {
    /**
     * 查询剧本的加密密钥
     * @param movieId 剧本id
     * @return 加密密钥
     */
    @Nullable
    MovieEncryptCode movieEncryptCode(@NotNull Long movieId);

    /**
     * 查询剧本的加密密钥,由PC服务器调用,验证必须是pc服务器且当前有开本
     * @param token PC服务器设备token
     * @param movieId 剧本id
     * @return 剧本加密密钥
     */
    @Nullable
    MovieEncryptCode movieEncryptCode(@NotNull Token token,@NotNull Long movieId);

    /**
     * 生成一个加密密钥并保存，然后返回生成的加密密钥
     * @param movieId 剧本id
     * @return 剧本加密密钥
     */
    @NotNull
    MovieEncryptCode save(@NotNull Long movieId);
}
